Cloud computing is the delivery of computing resource as a service over a network (e.g., the Internet). There are a number of types of cloud computing solutions that have been developed. Software-as-a-Service (SaaS) is a type of a solution, where a cloud service provider allows software applications and various hardware and software resources to execute the software application when requested by an end user (e.g., customer). In that manner, a customer of an on-demand application is free from the procurement and maintenance of the hardware and software that is needed for the execution of the applications. On the other hand, Platform-as-a-Service (PaaS) is a category of cloud computing solutions that facilitates the development and deployment of on-demand applications and services. PaaS is a growing technology space offering possibilities for optimization of information technology (IT) spending. It provides facilities required to support the lifecycle of web applications and services, available from the Internet. Applications run as a SaaS on the infrastructure that is provided from a PaaS provider. PaaS may give application developers the tools to design, develop, test, deploy and host their software applications, as well as use provided application services and infrastructure. Practically, different applications require different services and capabilities from the underlying infrastructure. For example, it is often difficult to select the proper runtime components needed for an application to operate efficiently on a cloud Virtual Machine (VM).
Open Services Gateway initiative (OSGi™) technology is the dynamic module system for Java™. The OSGi™ provides a modular architecture that reduces complexity of today's large scale systems. If an OSGi™ application is developed, then it contains one or more bundles. When such an application is deployed on a given PaaS, it is expected to find it provisioned and stared on a VM, provided from the PaaS. Depending on the complexity of the solution, the provisioning or installation process may involve a series of tedious tasks prone to errors. Typically, there is no predictability of whether the provisioning process will be successful or not. For example, a failure in the installation at the last stages, failure to resolve or start bundles from an application, or that the starting operation had not finished.